home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 January: Mac OS SDK / Dev.CD Jan 97 SDK1.toast / Development Kits (Disc 1) / QuickTime / Programming Stuff / Documentation / develop articles / develop Issue 23 / Internet Config / IC 1.1 / ICAppSourceKit1.1 / ICWindowGlobals.p < prev    next >
Encoding:
Text File  |  1995-02-10  |  3.0 KB  |  128 lines  |  [TEXT/PJMM]

  1. unit ICWindowGlobals;
  2.  
  3. interface
  4.  
  5.     type
  6.         WindowType = (WT_None, WT_About, WT_Main, WT_Personal, WT_Email, WT_News,{}
  7.             WT_FileTransfer, WT_OtherServices, WT_Font, WT_FileMapping, WT_Helper, WT_Last);
  8.  
  9.     const
  10.         item_max = 10;
  11.         whats_max = 11;
  12.  
  13.     type
  14.         WhatRecord = record
  15.                 key: str31;
  16.                 typ: OSType;
  17.                 flags: longInt;
  18.                 data: ptr;
  19.                 spare_data: Ptr;
  20.                 fss: FSSpec;
  21.                 modified: boolean;
  22.             end;
  23.         WhatRecordPtr = ^WhatRecord;
  24.     var
  25.         windowinfo: array[WindowType] of record
  26.                 window: WindowPtr;
  27.                 items: array[1..item_max] of WhatRecordPtr;
  28.                 selected_item: integer;
  29.                 id: integer;
  30.                 position: Point;
  31.             end;
  32.         whatinfo: array[1..whats_max] of record
  33.                 typ: OSType;
  34.                 open: ProcPtr;
  35.                 key: ProcPtr;
  36.                 click: ProcPtr;
  37.                 activate: ProcPtr;
  38.                 idle: ProcPtr;
  39.                 flush: ProcPtr;
  40.                 close: ProcPtr;        (* must be able to call close after successful *or* failed open *)
  41.                 cursor: ProcPtr;
  42.                 cursorid: integer;
  43.             end;
  44.  
  45.     const
  46.         wf_locked = 31;
  47.         wf_locked_mask = $80000000;
  48.  
  49.     function GetSelectedItem (wt: WindowType): integer;
  50.     function GetWindowType (wp: WindowPtr): WindowType;
  51.  
  52.     procedure ProcessAttributes (wt: WindowType; item: integer; attr: longint);
  53.     function IsLocked (wt: WindowType; item: integer): boolean;
  54.     procedure LockedAlert (wt: WindowType; item: integer);
  55.  
  56.     procedure InitICWindowGlobals;
  57.  
  58. implementation
  59.  
  60.     uses
  61.         ICTypes, 
  62.  
  63.         ICDocUtils;
  64.  
  65.     function GetSelectedItem (wt: WindowType): integer;
  66.         var
  67.             selected_item: integer;
  68.     begin
  69.         selected_item := windowinfo[wt].selected_item;
  70.         if (selected_item > 0) & (windowinfo[wt].items[selected_item] <> nil) & (windowinfo[wt].items[selected_item]^.typ = 'TEXT') then begin
  71.             GetSelectedItem := selected_item;
  72.         end
  73.         else begin
  74.             GetSelectedItem := -1;
  75.         end; (* if *)
  76.     end; (* GetSelectedItem *)
  77.  
  78.     function GetWindowType (wp: WindowPtr): WindowType;
  79.         var
  80.             i: WindowType;
  81.     begin
  82.         GetWindowType := WT_None;
  83.         if wp <> nil then begin
  84.             for i := WT_None to WT_Last do begin
  85.                 if windowinfo[i].window = wp then begin
  86.                     GetWindowType := i;
  87.                     leave;
  88.                 end;
  89.             end;
  90.         end;
  91.     end;
  92.  
  93.     procedure ProcessAttributes (wt: WindowType; item: integer; attr: longint);
  94.     begin
  95.         if (attr <> ICattr_no_change) & btst(attr, ICattr_locked_bit) then begin
  96.             bset(windowinfo[wt].items[item]^.flags, wf_locked);
  97.         end; (* if *)
  98.     end; (* ProcessAttributes *)
  99.  
  100.     function IsLocked (wt: WindowType; item: integer): boolean;
  101.     begin
  102.         IsLocked := btst(windowinfo[wt].items[item]^.flags, wf_locked) | IsDocLocked;
  103.     end; (* IsLocked *)
  104.  
  105.     var
  106.         last_alert_wt: WindowType;
  107.         last_alert_item: integer;
  108.  
  109.     procedure LockedAlert (wt: WindowType; item: integer);
  110.         var
  111.             junk: integer;
  112.     begin
  113.         if (wt <> last_alert_wt) or (item <> last_alert_item) then begin
  114.             ResetAlrtStage;
  115.             last_alert_wt := wt;
  116.             last_alert_item := item;
  117.         end; (* if *)
  118.         InitCursor;
  119.         junk := StopAlert(143, nil);
  120.     end; (* LockedAlert *)
  121.  
  122.     procedure InitICWindowGlobals;
  123.     begin
  124.         last_alert_wt := WT_None;
  125.         last_alert_item := -1;
  126.     end; (* InitICWindowGlobals *)
  127.  
  128. end.